package com.library.books.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.library.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 书籍对象 books
 *
 * @author hb
 * @date 2024-10-14
 */
@ApiModel("书籍对象 表名：books")
@Builder
@Accessors(chain = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Books implements Serializable {
    private static final long serialVersionUID = 1L;

    /** id */
    @ApiModelProperty("id")
    @TableId(type = IdType.AUTO)
    private Long booksId;

    /** ISBN号 */
    @ApiModelProperty("ISBN号")
    @Excel(name = "ISBN号")
    private String booksIsbn;

    /** 书籍名称 */
    @ApiModelProperty("书籍名称")
    @Excel(name = "书籍名称")
    private String booksName;

    /** 书籍类别 */
    @ApiModelProperty("书籍类别")
    @Excel(name = "书籍类别")
    private String booksType;

    /** 书籍作者 */
    @ApiModelProperty("书籍作者")
    @Excel(name = "书籍作者")
    private String booksAuthor;

    /** 书籍第二作者 */
    @ApiModelProperty("第二作者")
    @Excel(name = "第二作者")
    private String booksSecondDuty;

    /** 出版社 */
    @ApiModelProperty("出版社")
    @Excel(name = "出版社")
    private String booksPublisher;

    /** 出版地 */
    @ApiModelProperty("出版地")
    @Excel(name = "出版地")
    private String booksPublisherPlace;

    /** 出版时间 */
    @ApiModelProperty("出版时间")
    @Excel(name = "出版时间")
    private String booksPublisherDate;

    /** 书籍单价 */
    @ApiModelProperty("书籍单价")
    @Excel(name = "书籍单价")
    private BigDecimal booksPrice;

    /** 内容简介 */
    @ApiModelProperty("内容简介")
    @Excel(name = "内容简介")
    private String booksSynopsis;

    /** 封面图片 */
    @ApiModelProperty("封面图片")
    @Excel(name = "封面图片")
    private String booksCoverPhoto;

    /** 书籍国图书分类 */
    @ApiModelProperty("国图书分类")
    @Excel(name = "国图书分类")
    private String booksCnType;

    /** 书籍总页数 */
    @ApiModelProperty("书籍总页数")
    @Excel(name = "书籍总页数")
    private String booksPages;

    /** 书籍字数 */
    @ApiModelProperty("书籍字数")
    @Excel(name = "书籍字数")
    private String booksWords;

    /** 书籍扩展副名称 */
    @ApiModelProperty("副题名")
    @Excel(name = "副题名")
    private String booksExtName;

    /** 书籍译者名 */
    @ApiModelProperty("翻译人")
    @Excel(name = "翻译人")
    private String booksTranslator;

    /** 分辑号 */
    @ApiModelProperty("分辑号")
    @Excel(name = "分辑号")
    private String booksPartNumber;

    /** 分辑名 */
    @ApiModelProperty("分辑名")
    @Excel(name = "分辑名")
    private String booksPartTitle;

    /** 四角号 */
    @ApiModelProperty("四角号")
    @Excel(name = "四角号")
    private String booksSjh;

    /** 从编号 */
    @ApiModelProperty("从编号")
    @Excel(name = "从编号")
    private String booksCbm;

    /** 丛编作者 */
    @ApiModelProperty("丛编作者")
    @Excel(name = "丛编作者")
    private String booksCbzz;

    /** 著者号 */
    @ApiModelProperty("著者号")
    @Excel(name = "著者号")
    private String booksZzh;

    /** 书籍语种 */
    @ApiModelProperty("语种")
    @Excel(name = "语种")
    private String booksLangue;

    /** 附言 */
    @ApiModelProperty("附言")
    @Excel(name = "附言")
    private String booksPs;

    /** 开本 (12cm * 120cm) */
    @ApiModelProperty("开本")
    @Excel(name = "开本")
    private String booksSpec;

    /** 印刷 */
    @ApiModelProperty("印刷")
    @Excel(name = "印刷")
    private String booksPrint;

    /** 印次 */
    @ApiModelProperty("印次")
    @Excel(name = "印次")
    private String booksPrintNum;

    /** 版本，版本说明 默认拿第一个 */
    @ApiModelProperty("版本说明")
    @Excel(name = "版本说明")
    private String booksVersion;

    /** 机读目录数据 */
    @ApiModelProperty("marc")
    @Excel(name = "marc")
    private String booksMarc;

    /** 软删除 */
    @ApiModelProperty("软删除")
    private Long booksSoft;

    /** 创建人id */
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Long createId;

    /** 创建者 */
    @ApiModelProperty("创建者")
    @Excel(name = "创建者")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @Excel(name = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 修改人id */
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.UPDATE)
    private Long updateId;

    /** 修改人 */
    @ApiModelProperty("修改人")
    @Excel(name = "修改人")
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /** 数量-扩展属性 */
    @ApiModelProperty("数量")
    @Excel(name = "数量")
    @TableField(exist = false)
    private Long booksNum;

}
